package Enea.server;

import Enea.project.dcc.DCC;
import Enea.project.*;
import java.io.IOException;
import java.net.*;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* La classe si occupa di fornire l'interfaccia server al progetto definito tramite 
* DCC.
* 
*@author Davide aversa
*@version 0.1
* 
*/
public class EneaServer extends Thread {

    private int portnumber;
    private DCC project;


    /**
    * Costruttore della classe EneaServer.
    * 
    * @param portnumber Indica la porta sulla quale il server viene messo in attesa.
    * @param project E' il riferimento al progetto DCC associato al server.
    *
    */
    public EneaServer(int portnumber, DCC project) {
        this.portnumber = portnumber;
	this.project = project;
    }
    
    @Override
    public void run() {
        //TODO: risolvere il try catch
        ServerSocket server;
        try {
            System.out.println("Server is running.");
            server = new ServerSocket(this.portnumber);
        } catch (IOException ex) {
            Logger.getLogger(EneaServer.class.getName()).log(Level.SEVERE, null, ex);
            return;
        }
        
        while(true) {
            try {
                new EneaServerConnection(server.accept(), this.project).start();
            } catch (IOException ex) {
                Logger.getLogger(EneaServer.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

} 